// 引入express模块
const express = require('express')
// sha1加密
const sha1 = require('sha1')

// 引入reply模块
const reply = require('./reply')
// 引入路由模块
const userRouter = require('./route/router')
// 引入weChat模块
const WeChat = require('./wechat/weChat')
const weChatApi = new WeChat()

// 引入config模块
const {url} = require('./config')
const ejsConf = require('./route/ejsConf')

const router = require('./route')
// 创建app应用
const app = express()


/**
 * 生产js-sdk的使用签名
 * 1.组合的四个参数：jsapi_ticket（临时票据）,noncestr（随机字符串）,timestamp（时间戳）,url（地址）
 * 2.进行字典序排序，再拼接再一起使用&符号
 * 3.进行sha1加密，最终生成signature
 */


// 页面路由
/*app.get('/search', async (req, res) => {
    // 获取票据
    const {ticket} = await weChatApi.fetchTicket()
    // 随机字符串
    const noncestr = Math.random().toString().split('.')[1]
    // 时间戳
    const timestamp = Date.now()
    // url

    const arr = [
        `jsapi_ticket:${ticket}`,
        `noncestr:${noncestr}`,
        `timestamp:${timestamp}`,
        `url:${url}/search`,
    ]
    // 字典排序
    const str = arr.sort().join('&')
    console.log(str) //
    // sha1加密
    const signature = sha1(str)
    console.log(signature)


    // 渲染页面，将渲染好的页面返回给用户
    res.render('search', {
        signature, noncestr, timestamp
    })
})*/
/*app.get('/', (req, res) => {
    // 渲染页面，将渲染好的页面返回给用户
    res.render('info')
})*/

/**
 * 方式一
 */
// 优化动态路由设置
//userRouter(app)
// 验证服务器有效性和消息返回
//app.use(reply())

/**
 * 方式二
 */
// 配置模版引擎（动态设置）
// app.set('views','day01/08使用JS-SDK/views/')
// app.set('view engine','ejs')
for (const key in ejsConf.getView()) {
    app.set(key, ejsConf.getView()[key])
}
app.use(router)

// 监听端口号
app.listen(3000, () => {
    console.log('端口：3000，服务器启动成功了~')
})
// let server = app.listen(3000, function () {
//     let host = server.address().address
//     let port = server.address().port
//     console.log('服务器启动成功了~')
//     console.log("地址为：%s:%s", host, port)
// })
